/*
 * @(#)RoleViewAction.java 创建于 2013年3月20日 
 * 
 * Copyright (c) 2013-2014 by Drow.  
 *
 */
package com.hangxin.basic.web;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.hangxin.basic.model.Dictinfo;
import com.hangxin.basic.model.RoleView;
import com.hangxin.basic.service.DictInfoService;
import com.hangxin.basic.service.RoleViewService;
import com.hangxin.commons.util.PageModel;
import com.hangxin.commons.web.BasicAction;

/**
 * 
 * 类名称：RoleViewAction.java
 * <P/>
 * 类描述： 角色与资源菜单的操作
 * <P/>
 * 创建时间：2013年3月20日
 * <P/>
 * 创建人： 段志杨
 * <P/>
 * 联系方式： 315874529@qq.com
 * <P/>
 * 修改人：无
 * <P/>
 * 修改时间：无
 * <P/>
 * 修改备注：无
 * <P/>
 * 版本：v1.0
 * 
 */
@Controller
public class RoleViewAction extends BasicAction
{
	@Resource
	private RoleViewService roleViewServiceImpl;

	@Resource
	private DictInfoService dictInfoServiceImpl;



	/**
	 * 
	 * 功能描述：初始化角色与资源菜单管理iframe页
	 * <P/>
	 * 创建时间：2013年3月20日
	 * <P/>
	 * 创建人： 段志杨
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @return
	 */
	@RequestMapping(value = "/roleViewAction00")
	public String roleView00()
	{
		return "system/role/roleViewManage";
	}

	/**
	 * 
	 * 功能描述：加载角色数据列表页面
	 * <P/>
	 * 创建时间：2013年3月20日
	 * <P/>
	 * 创建人： 段志杨
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @return
	 */
	@RequestMapping(value = "/roleViewAction01")
	public String roleView01()
	{
		return "system/role/roleViewList";
	}

	/**
	 * 
	 * 功能描述：加载资源菜单列表
	 * <P/>
	 * 创建时间：2013年3月20日
	 * <P/>
	 * 创建人： 段志杨
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @return
	 */
	@RequestMapping(value = "/roleViewAction02")
	public String roleView02()
	{
		return "system/role/roleForView";
	}

	/**
	 * 
	 * 功能描述：角色信息管理页面
	 * <P/>
	 * 创建时间：2013年3月21日
	 * <P/>
	 * 创建人： 段志杨
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @return
	 */
	@RequestMapping(value = "/rolelistAction00")
	public String userlist(HttpServletRequest request, Integer pageno, Integer pages, Model model)
	{
		PageModel<Map<String, Object>> pageModel = new PageModel<Map<String, Object>>();
		pageModel.setPages(1);
		pageModel.setPageNo(1);
		pageModel.setPageSize(10);;
		Object[] paramscount = new Object[] { "角色类型" };

		pageModel = dictInfoServiceImpl.pageForList(pageModel, paramscount);
		model.addAttribute("pageModel", pageModel);
		return "system/role/roleViewList";
	}

	@RequestMapping(value = "/roleManageAction")
	public String roleManageAction()
	{
		return "system/role/roleManage";
	}

	/**
	 * 
	 * 功能描述：角色管理
	 * <P/>
	 * 创建时间：2013年3月21日
	 * <P/>
	 * 创建人： 段志杨
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @return
	 */
	@RequestMapping(value = "/roleListAction")
	public String roleListAction(HttpServletRequest request, Integer pageno, Integer pages, Model model)
	{
		PageModel<Map<String, Object>> pageModel = new PageModel<Map<String, Object>>();
		pageno=(pageno==null)?1:pageno;
		pages=(pages==null)?1:pages;
		pageModel.setPages(pages);pageModel.setPageNo(pageno);pageModel.setPageSize(9);
		Object[] paramscount = new Object[] { "角色类型" };

		pageModel = dictInfoServiceImpl.pageForList(pageModel, paramscount);
		model.addAttribute("pageModel", pageModel);
		return "system/role/roleList";
	}



	/**
	 * 
	 * 功能描述:跳转到角色信息添加页面
	 * <P/>
	 * 创建时间：2013年3月21日
	 * <P/>
	 * 创建人： 段志杨
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param request
	 * @param model
	 * @return
	 */
	@RequestMapping(value = "/roleAddAction0")
	public String roleAddAction0(HttpServletRequest request, Model model)
	{
		return "system/role/roleAdd";
	}



	/**
	 * 
	 * 功能描述：角色信息添加操作
	 * <P/>
	 * 创建时间：2013年3月19日
	 * <P/>
	 * 创建人： 段志杨
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param request
	 * @param response
	 * @param Dictinfo
	 * @return
	 */
	@RequestMapping(value = "/roleAddAction1")
	public String roleAddAction1(HttpServletRequest request, HttpServletResponse response, Dictinfo dict)
	{
		dict.setType("角色类型");
		List<Integer> list = new ArrayList<Integer>();
		if(request.getSession().getAttribute("realname")==null){
			list.add(0);
		}else if(request.getSession().getAttribute("realname").equals("")){
			list.add(0);
		}else{
			Integer ig = dictInfoServiceImpl.dictIfExist(dict);
			if (ig > 0)
			{
				list.add(2);
			} else
			{
				Integer itg = dictInfoServiceImpl.insertDict(dict);
				if (itg > 0)
				{
					list.add(1);
				}
			}
		}
		response.setCharacterEncoding("utf-8");
		JSONArray array = new JSONArray();
		PrintWriter out = null;
		try
		{
			out = response.getWriter();
		} catch (IOException e)
		{
			e.printStackTrace();
		}
		array = JSONArray.fromObject(list);
		out.print(array);
		return null;
	}



	/**
	 * 
	 * 功能描述:跳转到角色信息修改页面
	 * <P/>
	 * 创建时间：2013年3月21日
	 * <P/>
	 * 创建人： 段志杨
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param request
	 * @param model
	 * @return
	 */
	@RequestMapping(value = "/roleEditAction0")
	public String roleEditAction0(HttpServletRequest request, Dictinfo dict, Model model)
	{
		Map<String, Object> mp = dictInfoServiceImpl.findMapByDectId(dict);
		model.addAttribute("map", mp);
		return "system/role/roleEdit";
	}
	
	

	/**
	 * 
	 * 功能描述：角色信息修改操作
	 * <P/>
	 * 创建时间：2013年3月21日
	 * <P/>
	 * 创建人： 段志杨
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param request
	 * @param response
	 * @param Dictinfo
	 * @return
	 */
	@RequestMapping(value = "/roleEditAction")
	public String roleEditAction(HttpServletRequest request, HttpServletResponse response, Dictinfo dict)
	{
		dict.setType("角色类型");
		List<Integer> list = new ArrayList<Integer>();
		if(request.getSession().getAttribute("realname")==null){
			list.add(0);
		}else if(request.getSession().getAttribute("realname").equals("")){
			list.add(0);
		}else{
			Integer ig = dictInfoServiceImpl.dictIfExistIdName(dict);
			if (ig > 0)
			{
				list.add(2);
			}else{
				Integer itg = dictInfoServiceImpl.saveDict(dict);
				if (itg > 0)
				{
					list.add(1);
				}
			}
		}
		response.setCharacterEncoding("utf-8");
		JSONArray array = new JSONArray();
		PrintWriter out = null;
		try
		{
			out = response.getWriter();
		} catch (IOException e)
		{
			e.printStackTrace();
		}
		array = JSONArray.fromObject(list);
		out.print(array);
		return null;
	}



	/**
	 * 
	 * 功能描述：角色信息删除操作
	 * <P/>
	 * 创建时间：2013年3月21日
	 * <P/>
	 * 创建人： 段志杨
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param request
	 * @param response
	 * @param Dictinfo
	 * @return
	 */
	@RequestMapping(value = "/roleDelAction")
	public String roleDelAction(HttpServletRequest request, HttpServletResponse response, Long[] id)
	{
		List<Integer> list = new ArrayList<Integer>();
		if(request.getSession().getAttribute("realname")==null){
			list.add(0);
		}else if(request.getSession().getAttribute("realname").equals("")){
			list.add(0);
		}else{
			list.add(1);
			for (int j = 0; j < id.length; j++) {
				Integer itg = dictInfoServiceImpl.deleteDict(id[j]);
				if (itg > 0)
				{
					
//					Integer tge = roleViewServiceImpl.ifExist(id[j]);
//					if (tge > 0)
//					{
						
//						Integer ger = roleViewServiceImpl.deleteMenu(id[j]);
//						if (ger > 0)
//						{
//							list.add(2);
//						} else
//						{
//							list.add(1);
//						}
//					} else
//					{
//						list.add(2);
//					}
				}
			}
		}
		response.setCharacterEncoding("utf-8");
		JSONArray array = new JSONArray();
		PrintWriter out = null;
		try
		{
			out = response.getWriter();
		} catch (IOException e)
		{
			e.printStackTrace();
		}
		array = JSONArray.fromObject(list);
		out.print(array);
		return null;
	}

	@RequestMapping(value = "/roleForViewAction")
	public String roleForViewAction()
	{
		return "system/role/roleView";
	}

	/**
	 * 
	 * 功能描述：获取资源菜单
	 * <P/>
	 * 创建时间：2013年3月20日
	 * <P/>
	 * 创建人： 段志杨
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param request
	 * @param id
	 * @param model
	 * @return
	 */
	@RequestMapping(value = "/roleViewAction03")
	public String roleViewAction03(HttpServletRequest request, HttpServletResponse response, RoleView roleView, Model model)
	{
		List<Map<String, Object>> listMenu = roleViewServiceImpl.selectList();

		List<Map<String, Object>> listLogin = roleViewServiceImpl.selectListByRoleId(roleView);
		StringBuffer sbf = new StringBuffer();
		sbf.append("[");
		for (Map<String, Object> map : listMenu)
		{
			sbf.append("{id:" + map.get("id") + ",");
			sbf.append("pId:" + map.get("parentId") + ",");
			for (Map<String, Object> mp : listLogin)
			{
				if (map.get("id").equals(mp.get("id")))
				{
					sbf.append("checked:true,");
				}
			}

			sbf.append("name:'" + map.get("name") + "'},");
		}
		sbf.deleteCharAt(sbf.length() - 1);
		sbf.append("]");
		// System.out.println("StringBuffer:" + sbf);
		response.setCharacterEncoding("utf-8");
		JSONArray array = new JSONArray();
		PrintWriter out = null;
		try
		{
			out = response.getWriter();
		} catch (IOException e)
		{
			e.printStackTrace();
		}
		array = JSONArray.fromObject(sbf.toString());
		out.print(array);
		return null;
	}



	/**
	 * 
	 * 功能描述：保存给角色分配菜单的操作
	 * <P/>
	 * 创建时间：2013年3月20日
	 * <P/>
	 * 创建人： 段志杨
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param request
	 * @param response
	 * @param nodeID
	 * @param roleId
	 * @param model
	 * @return
	 */
	@RequestMapping(value = "/roleViewAction04")
	public String roleView04(HttpServletRequest request, HttpServletResponse response, String nodeID, Long roleId, Model model)
	{
		String state = "2";
		String[] nid = nodeID.split(",");
		for (int k = 0; k < nid.length; k++)
		{
			Integer itg = roleViewServiceImpl.ifExist(nid[k], roleId);

			if (itg > 0)
			{
				Integer gter = roleViewServiceImpl.deleteDb(nid[k], roleId);
				if (gter > 0)
				{
					state = "1";
				} else
				{
					break;
				}
			} else
			{

				Integer gter = roleViewServiceImpl.insertDb(nid[k], roleId);
				if (gter > 0)
				{
					state = "1";
				} else
				{
					break;
				}
			}
		}
		List<String> list = new ArrayList<String>();
		list.add(state);
		response.setCharacterEncoding("utf-8");
		JSONArray array = new JSONArray();
		PrintWriter out = null;
		try
		{
			out = response.getWriter();
		} catch (IOException e)
		{
			e.printStackTrace();
		}
		array = JSONArray.fromObject(list);
		out.print(array);
		return null;
	}

}
